package MyScanner;

import java.util.ArrayList;
import java.util.List;

//标准元素：包含所有的关键字以及标准运算符，界限符号
public class StdElements {
    private static List<String> keywords;
    private static List<String> symbols;

    static {
        keywordsListInit();
        symbolsListInit();
    }

    //关键字列表
    private static void keywordsListInit()
    {
        keywords = new ArrayList<>();
        keywords.add("auto");
        keywords.add("break");
        keywords.add("case");
        keywords.add("char");
        keywords.add("const");
        keywords.add("continue");
        keywords.add("default");
        keywords.add("do");
        keywords.add("double");
        keywords.add("else");
        keywords.add("enum");
        keywords.add("extern");
        keywords.add("float");
        keywords.add("for");
        keywords.add("goto");
        keywords.add("if");
        keywords.add("inline");
        keywords.add("int");
        keywords.add("long");
        keywords.add("register");
        keywords.add("restrict");
        keywords.add("return");
        keywords.add("short");
        keywords.add("signed");
        keywords.add("sizeof");
        keywords.add("static");
        keywords.add("struct");
        keywords.add("switch");
        keywords.add("typedef");
        keywords.add("union");
        keywords.add("unsigned");
        keywords.add("void");
        keywords.add("volatile");
        keywords.add("while");
    }

    //符号列表
    private static void symbolsListInit()
    {
        symbols = new ArrayList<>();
        symbols.add("[");
        symbols.add("]");
        symbols.add("(");
        symbols.add(")");
        symbols.add("{");
        symbols.add("}");
        symbols.add(".");
        symbols.add("->");
        symbols.add("++");
        symbols.add("--");
        symbols.add("&");
        symbols.add("*");
        symbols.add("+");
        symbols.add("-");
        symbols.add("~");
        symbols.add("!");
        symbols.add("/");
        symbols.add("%");
        symbols.add("<<");
        symbols.add(">>");
        symbols.add("<");
        symbols.add(">");
        symbols.add("<=");
        symbols.add(">=");
        symbols.add("==");
        symbols.add("!=");
        symbols.add("^");
        symbols.add("|");
        symbols.add("&&");
        symbols.add("||");
        symbols.add("?");
        symbols.add(":");
        symbols.add(";");
        symbols.add("...");
        symbols.add("=");
        symbols.add("*=");
        symbols.add("/=");
        symbols.add("%=");
        symbols.add("+=");
        symbols.add("-=");
        symbols.add("<<=");
        symbols.add(">>=");
        symbols.add("&=");
        symbols.add("^=");
        symbols.add("|=");
        symbols.add(",");
        symbols.add("#");
        symbols.add("##");
        symbols.add("<:");
        symbols.add(":>");
        symbols.add("<%");
        symbols.add("%>");
        symbols.add("%:");
        symbols.add("%:%:");
    }

    public static boolean isKeyWords(String str)
    {
        return keywords.contains(str);
    }
    public static boolean isSymbol(String str)
    {
        return symbols.contains(str);
    }

}
